package cn.bjxy.shishaolong.ra_room.service;

import cn.bjxy.shishaolong.ra_room.entity.Raroom;
import cn.bjxy.shishaolong.ra_room.entity.RaroomFileRalation;
import cn.bjxy.shishaolong.ra_room.entity.RaroomQueryEntity;
import cn.bjxy.shishaolong.ra_room.entity.RaroomStudentRalation;
import cn.bjxy.shishaolong.request_answer.entity.Request;
import cn.bjxy.shishaolong.system.file.entity.File;
import cn.bjxy.shishaolong.system.user.entity.SysUserInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 老师答疑室 服务类
 * </p>
 *
 * @author 时少龙
 * @since 2019-04-13
 */
public interface IRaroomService extends IService<Raroom> {

    /**
     * 分页查询
     *
     * @param page   分页信息
     * @param raroom 查询条件
     * @return 查询结果集
     */
    IPage<Raroom> queryByCondition(IPage<Raroom> page, Raroom raroom);

    /**
     * 普通查询
     *
     * @param raroom 查询条件
     * @return 查询结果集
     */
    List<Raroom> queryByCondition(Raroom raroom);

    /**
     * 获取答疑室开通所需的所有数据
     */
    RaroomQueryEntity getAllData();

    /**
     * 查询出自己的答疑室
     * @param currentUserId
     * @return
     */
    Map queryMyRaRoomList(Integer currentUserId);

    /**
     * 查询答疑室的所属
     * @param userId
     * @param RoomId
     * @return
     */
    Map queryRoomOwn(Integer userId, Integer RoomId);

    /**
     * 开启答疑室
     *
     * @param raroom
     */
    void open(Raroom raroom);

    /**
     * 删除答疑室
     *
     * @param ids
     */
    Boolean remove(String ids);

    /**
     * 关闭答疑室
     */
    void changeRoomStatus(Integer teacherId, Integer roomStatus);

    /*======================= 文件相关 end ===========================*/
    /**
     * 根据答疑室id 查询答疑室中的文件
     *
     * @param file
     * @return
     */
    List<File> queryFileByCondition(File file);

    /**
     * 根据答疑室id 查询 分页
     * @param page
     * @param file
     * @return
     */
    IPage<File> queryFileByCondition(IPage<File> page, File file);

    /**
     * 答疑室文件上传
     *
     * @param fileRalation
     */
    void fileUpload(RaroomFileRalation fileRalation);

    /**
     * 删除答疑室文件
     *
     * @param fileRalation
     */
    void remove(RaroomFileRalation fileRalation);
    /*======================= 文件相关 end ===========================*/

    /*======================= 学生相关 end ===========================*/
    /**
     * 根据答疑室id 查询答疑室中的学生
     *
     * @param student
     * @return
     */
    List<SysUserInfo> queryStudentByCondition(SysUserInfo student);

    /**
     * 根据答疑室id 查询 分页
     * @param page
     * @param student
     * @return
     */
    IPage<SysUserInfo> queryStudentByCondition(IPage<SysUserInfo> page, SysUserInfo student);

    /**
     * 审核答疑室学生
     *
     * @param studentRalation
     */
    void verify(RaroomStudentRalation studentRalation);

    /**
     * 删除答疑室中的学生
     * @param studentRalation
     */
    void remove(RaroomStudentRalation studentRalation);

    /*======================= 学生相关 end ===========================*/

}
